import getUrl from 'discourse-common/lib/get-url';
import computed from 'ember-addons/ember-computed-decorators';
import { getToken } from 'wizard/lib/ajax';
import { getOwner } from 'discourse-common/lib/get-owner';

export default Ember.Component.extend({
  classNames: ['wizard-image-row'],
  uploading: false,

  @computed('field.id')
  previewComponent(id) {
    const componentName = `image-preview-${Ember.String.dasherize(id)}`;
    const exists = getOwner(this).lookup(`component:${componentName}`);
    return exists ? componentName : 'wizard-image-preview';
  },

  didInsertElement() {
    this._super();

    const $upload = this.$();

    const id = this.get('field.id');

    $upload.fileupload({
      url: getUrl("/uploads.json"),
      formData: { synchronous: true,
                  type: `wizard_${id}`,
                  authenticity_token: getToken() },
      dataType: 'json',
      dropZone: $upload,
    });

    $upload.on("fileuploadsubmit", () => this.set('uploading', true));

    $upload.on('fileuploaddone', (e, response) => {
      this.set('field.value', response.result.url);
      this.set('uploading', false);
    });
  },
});
